{ "cells": [ { "cell_type": "markdown", "id": "8fdf70be-07ed-4105-be25-12eab5ef4ae1", "metadata": { "tags": [] }, "source": [ "# Standalone with Detailed Downstream Modeling Example" ] }, { "cell_type": "code", "execution_count": 11, "id": "01f45f0b-eb97-4b73-9b4c-48468023b745", "metadata": { "tags": [] }, "outputs": [], "source": [ "from generation_models import StandaloneStorageModel, ACLosses, BaseSystemDesign, DownstreamSystem, MultiStorageInputs, BatteryParams, DARTPrices, Transformer\n", "from tyba_client.client import Client\n", "import numpy as np\n", "import pandas as pd\n", "import os" ] }, { "cell_type": "code", "execution_count": 3, "id": "41046b5b-b2c2-4360-80fb-5aaae1609b18", "metadata": { "tags": [] }, "outputs": [], "source": [ "client = Client(os.environ[\"TYBA_PAT\"])" ] }, { "cell_type": "markdown", "id": "8ae60ae6-a1e4-4ff0-ae5b-5f96de3d3897", "metadata": {}, "source": [ "## Build model, including DownstreamSystem" ] }, { "cell_type": "code", "execution_count": 12, "id": "65d861bb-b56c-43eb-90b6-15e4af6e3071", "metadata": { "tags": [] }, "outputs": [], "source": [ "model = StandaloneStorageModel(\n", " energy_prices=DARTPrices(\n", " dam=np.random.random(720).tolist(),\n", " rtm=np.random.random(720).tolist(),\n", " ),\n", " storage_inputs=MultiStorageInputs(\n", " batteries=[BatteryParams(\n", " power_capacity=2e3,\n", " energy_capacity=4e3 / 0.95,\n", " discharge_efficiency=0.95,\n", " charge_efficiency=0.05,\n", " degradation_rate=0.04,\n", " )],\n", " ),\n", " downstream_system=DownstreamSystem(\n", " losses=ACLosses(\n", " ac_wiring=0.015,\n", " transmission=0.012,\n", " mv_transformer=Transformer(load_loss=0.01, no_load_loss=0.003),\n", " hv_transformer=Transformer(load_loss=0.009, no_load_loss=0.004),\n", " ),\n", " system_design=BaseSystemDesign(dc_capacity=2e3, ac_capacity=2.5e3, poi_limit=2e3),\n", " model_losses_from=\"DC\",\n", " inverter=\"SMA America: SWR2500U [240V]\",\n", " ),\n", " project_term=720,\n", " project_term_units=\"hours\",\n", ")" ] }, { "cell_type": "markdown", "id": "9d108e88-cc6b-42e1-bbbd-86db5276a1f7", "metadata": {}, "source": [ "## Run model" ] }, { "cell_type": "code", "execution_count": 13, "id": "33c9642d-22a5-435b-a634-7976236d2a20", "metadata": { "tags": [] }, "outputs": [], "source": [ "resp = client.schedule(model)" ] }, { "cell_type": "code", "execution_count": 15, "id": "5e56c7c2-08a2-49c6-8b41-5f09eef907ea", "metadata": { "tags": [] }, "outputs": [], "source": [ "id_ = resp.json()[\"id\"]" ] }, { "cell_type": "code", "execution_count": 17, "id": "e9ca915a-6e74-4563-bf82-0bb23c25f5a6", "metadata": { "tags": [] }, "outputs": [], "source": [ "res = client.wait_on_result(id_)" ] }, { "cell_type": "markdown", "id": "3ce8a57e-5105-44ed-882a-427e347d31ec", "metadata": {}, "source": [ "## Check out results" ] }, { "cell_type": "code", "execution_count": 25, "id": "d65fcfdd-5d72-4dbf-b870-8dbeccf7ccf9", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "dict_keys(['system', 'optimizer_outputs', 'market_awards'])" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "res.keys()" ] }, { "cell_type": "code", "execution_count": 19, "id": "59f72620-f343-4051-a86d-aeb6b3fea970", "metadata": { "tags": [] }, "outputs": [], "source": [ "system, optimizer, awards = (pd.DataFrame(v) for v in res.values())" ] }, { "cell_type": "code", "execution_count": 22, "id": "eb751dc4-3bfd-4dfb-820f-4cb2559441d2", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
hv_xfmr_no_load_lossgengross_ac_powerpositive_poimv_xfmr_load_lossdc_powerinverter_consumption_losspoihv_ac_powertransmission_losshv_xfmr_load_lossnegative_poidc_voltagehv_xfmr_lossinverter_tare_losstransformer_lossinverter_parasitic_lossmv_xfmr_lossinverter_clipping_losspoi_unadjustedinverter_efficiencypre_hvac_ac_powerac_powermax_mv_powermv_xfmr_no_load_lossac_wiring_loss
08.0-8.00000-0.7500000.000000.0000030.00.000000-8.00000-8.0000000.0000000.000000-8.000000.08.0000000.758.0000000.756.0000030.0-8.000000.0000000.00.01842.9917846.00.000
18.0-8.00000-0.7500000.000000.0000030.00.000000-8.00000-8.0000000.0000000.000000-8.000000.08.0000000.758.0000000.756.0000030.0-8.000000.0000000.00.01842.9917846.00.000
28.0-8.00000-0.7500000.000000.0000030.00.000000-8.00000-8.0000000.0000000.000000-8.000000.08.0000000.758.0000000.756.0000030.0-8.000000.0000000.00.01842.9917846.00.000
38.0-8.00000-0.7500000.000000.0000030.00.000000-8.00000-8.0000000.0000000.000000-8.000000.08.0000000.758.0000000.756.0000030.0-8.000000.0000000.00.01842.9917846.00.000
48.0-8.00000-0.7500000.000000.0000030.00.000000-8.00000-8.0000000.0000000.000000-8.000000.08.0000000.758.0000000.756.0000030.0-8.000000.0000000.00.01842.9917846.00.000
.................................................................................
7158.0-8.00000-0.7500000.000000.0000030.00.000000-8.00000-8.0000000.0000000.000000-8.000000.08.0000000.758.0000000.756.0000030.0-8.000000.0000000.00.01842.9917846.00.000
7168.0-2056.54405-2143.1527450.0000022.965518-2000.05.630538-2056.54405-2056.5440500.00000018.544050-2056.54405300.026.5440500.0026.5440500.0028.9655180.0-2056.544050.933205-2000.0-2000.01842.9917846.030.000
7178.084.5091770.48231484.509170.02483995.020.97322484.5091785.5355971.0264270.0394030.00000300.08.0394030.008.0394030.006.0248390.084.509170.74191995.095.01842.9917846.01.425
7188.0-8.00000-0.7500000.000000.0000030.00.000000-8.00000-8.0000000.0000000.000000-8.000000.08.0000000.758.0000000.756.0000030.0-8.000000.0000000.00.01842.9917846.00.000
7198.0-8.00000-0.7500000.000000.0000030.00.000000-8.00000-8.0000000.0000000.000000-8.000000.08.0000000.758.0000000.756.0000030.0-8.000000.0000000.00.01842.9917846.00.000
\n", "

720 rows × 26 columns

\n", "
" ], "text/plain": [ " hv_xfmr_no_load_loss gen ... mv_xfmr_no_load_loss ac_wiring_loss\n", "0 8.0 -8.00000 ... 6.0 0.000\n", "1 8.0 -8.00000 ... 6.0 0.000\n", "2 8.0 -8.00000 ... 6.0 0.000\n", "3 8.0 -8.00000 ... 6.0 0.000\n", "4 8.0 -8.00000 ... 6.0 0.000\n", ".. ... ... ... ... ...\n", "715 8.0 -8.00000 ... 6.0 0.000\n", "716 8.0 -2056.54405 ... 6.0 30.000\n", "717 8.0 84.50917 ... 6.0 1.425\n", "718 8.0 -8.00000 ... 6.0 0.000\n", "719 8.0 -8.00000 ... 6.0 0.000\n", "\n", "[720 rows x 26 columns]" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "system # analogous to the usual solar_storage" ] }, { "cell_type": "code", "execution_count": 23, "id": "378d2901-8477-4daa-9c11-e8c7af386730", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
storage_discharge_maxcharge_lonegative_dam_base_pointsoe_loexport_limit_at_couplingsoe_meannominal_hvac_loaddam_pricertm_base_pointdischarge_actualtotal_outputsoe_hioutputdam_chargechargecharge_hisoe_actualdischarge_efficiencydischargebattery_outputcharge_actualdischarge_loimport_limit_at_couplingdam_base_pointinternal_energyrtm_priceinternal_energy_maxcharge_efficiencydam_dischargertm_chargedischarge_hihvac_loadrtm_dischargesoe_lo_hb
02000.00.00.00.0None0.00.00.1402690.00.00.00.00.00.00.00.00.00.950.00.00.00.0None0.00.00.4481884210.5263160.050.00.00.00.00.00.0
12000.00.00.00.0None0.00.00.3814990.00.00.00.00.00.00.00.00.00.950.00.00.00.0None0.00.00.9869224210.5263160.050.00.00.00.00.00.0
22000.00.00.00.0None0.00.00.9735030.00.00.00.00.00.00.00.00.00.950.00.00.00.0None0.00.00.5322834210.5263160.050.00.00.00.00.00.0
32000.00.00.00.0None0.00.00.3097170.00.00.00.00.00.00.00.00.00.950.00.00.00.0None0.00.00.5145774210.5263160.050.00.00.00.00.00.0
42000.00.00.00.0None0.00.00.5286340.00.00.00.00.00.00.00.00.00.950.00.00.00.0None0.00.00.6817714210.5263160.050.00.00.00.00.00.0
.........................................................................................................
7152000.00.00.00.0None0.00.00.9145860.00.00.00.00.00.00.00.00.00.950.00.00.00.0None0.00.00.7298484210.0895340.050.00.00.00.00.00.0
7162000.02000.02000.0100.0None50.00.00.016358-2000.00.0-2000.0100.0-2000.02000.02000.02000.0100.00.950.0-2000.02000.00.0None-2000.0100.00.7973644210.0895340.050.02000.00.00.00.00.0
7172000.00.0-95.00.0None50.00.00.66219395.095.095.00.095.00.00.00.00.00.9595.095.00.095.0None95.00.00.9091714210.0895340.0595.00.095.00.095.0100.0
7182000.00.00.00.0None0.00.00.2063030.00.00.00.00.00.00.00.00.00.950.00.00.00.0None0.00.00.9479744210.0895340.050.00.00.00.00.00.0
7192000.00.00.00.0None0.00.00.1343260.00.00.00.00.00.00.00.00.00.950.00.00.00.0None0.00.00.0748334210.0895340.050.00.00.00.00.00.0
\n", "

720 rows × 34 columns

\n", "
" ], "text/plain": [ " storage_discharge_max charge_lo ... rtm_discharge soe_lo_hb\n", "0 2000.0 0.0 ... 0.0 0.0\n", "1 2000.0 0.0 ... 0.0 0.0\n", "2 2000.0 0.0 ... 0.0 0.0\n", "3 2000.0 0.0 ... 0.0 0.0\n", "4 2000.0 0.0 ... 0.0 0.0\n", ".. ... ... ... ... ...\n", "715 2000.0 0.0 ... 0.0 0.0\n", "716 2000.0 2000.0 ... 0.0 0.0\n", "717 2000.0 0.0 ... 95.0 100.0\n", "718 2000.0 0.0 ... 0.0 0.0\n", "719 2000.0 0.0 ... 0.0 0.0\n", "\n", "[720 rows x 34 columns]" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "optimizer # same as in hybrid" ] }, { "cell_type": "code", "execution_count": 24, "id": "36fe8abe-a63e-410a-b7a5-6e3694897eab", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
negative_dam_base_pointrtm_base_pointrt_taredischarge_actualtotal_outputdam_chargechargedischargecharge_actualdam_base_pointdam_dischargertm_chargertm_discharge
00.000000.00000-8.00.00.000000.000000.000000.000000.00.000000.000000.000000.00000
10.000000.00000-8.00.00.000000.000000.000000.000000.00.000000.000000.000000.00000
20.000000.00000-8.00.00.000000.000000.000000.000000.00.000000.000000.000000.00000
30.000000.00000-8.00.00.000000.000000.000000.000000.00.000000.000000.000000.00000
40.000000.00000-8.00.00.000000.000000.000000.000000.00.000000.000000.000000.00000
..........................................
7150.000000.00000-8.00.00.000000.000000.000000.000000.00.000000.000000.000000.00000
7162056.54405-2056.544050.00.0-2056.544052056.544052056.544050.000002000.0-2056.544050.000002056.544050.00000
717-84.5091784.509170.095.084.509170.000000.0000084.509170.084.5091784.509170.0000084.50917
7180.000000.00000-8.00.00.000000.000000.000000.000000.00.000000.000000.000000.00000
7190.000000.00000-8.00.00.000000.000000.000000.000000.00.000000.000000.000000.00000
\n", "

720 rows × 13 columns

\n", "
" ], "text/plain": [ " negative_dam_base_point rtm_base_point ... rtm_charge rtm_discharge\n", "0 0.00000 0.00000 ... 0.00000 0.00000\n", "1 0.00000 0.00000 ... 0.00000 0.00000\n", "2 0.00000 0.00000 ... 0.00000 0.00000\n", "3 0.00000 0.00000 ... 0.00000 0.00000\n", "4 0.00000 0.00000 ... 0.00000 0.00000\n", ".. ... ... ... ... ...\n", "715 0.00000 0.00000 ... 0.00000 0.00000\n", "716 2056.54405 -2056.54405 ... 2056.54405 0.00000\n", "717 -84.50917 84.50917 ... 0.00000 84.50917\n", "718 0.00000 0.00000 ... 0.00000 0.00000\n", "719 0.00000 0.00000 ... 0.00000 0.00000\n", "\n", "[720 rows x 13 columns]" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "awards # optimizer results after offer correction" ] }, { "cell_type": "code", "execution_count": null, "id": "babc5329-3137-4748-9931-f7319e35bd26", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.12" } }, "nbformat": 4, "nbformat_minor": 5 }